def maxIceCream(costs, coins):
    # 计数排序
    max_cost = max(costs)  # 找到成本数组中的最大值
    count = [0] * (max_cost + 1)  # 初始化一个长度为最大成本加1的数组，用于计数
    for cost in costs:
        count[cost] += 1  # 计算每个成本的冰激凌数目
    
    # 贪心算法
    ans = 0  # 初始化可以购买的冰激凌数量
    for i in range(max_cost + 1):  # 遍历成本数组
        if count[i] == 0:  # 如果当前成本没有冰激凌，则跳过
            continue
        if coins >= i:  # 如果当前成本小于等于剩余的硬币数量
            num = min(count[i], coins // i)  # 计算可以购买的冰激凌数量
            ans += num  # 更新可以购买的冰激凌数量
            coins -= num * i  # 更新剩余的硬币数量
        else:
            break  # 如果当前成本大于剩余的硬币数量，则跳出循环,停止购买
    
    return   #返回可以购买的冰激凌数量

